Skip to content

refactor(Prefetcher): split L2 prefetch request queue by slices#13

Merged
linjuanZ merged 5 commits into
masterfrom
feat-l2pfqueue
Jun 8, 2026
Merged

refactor(Prefetcher): split L2 prefetch request queue by slices#13
linjuanZ merged 5 commits into
masterfrom
feat-l2pfqueue

Conversation

@ywlcode

@ywlcode ywlcode commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR refactors the L2 prefetch request path in XSCache by replacing the shared prefetch request queue with per-bank request queues and per-bank request ports.

The main goal is to reduce cross-bank arbitration blocking for L2 prefetch requests, especially when multiple prefetch sources target different L2 banks in the same cycle.

Performance

On SPEC06 gcc15 0.8cov:

  • SPEC2006/GHz: 19.442 -> 19.500, +0.298%
  • SPECint2006/GHz: +0.201%
  • SPECfp2006/GHz: +0.367%

Key counter changes over matched checkpoints:

  • BOP select/from: 70.525% -> 96.584%
  • VBOP select/from: 63.898% -> 96.131%
  • PBOP select/from: 57.384% -> 94.386%

Extra work

Add performance counters for the stamping loss situation in train and resp.

Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
Comment thread src/main/scala/coupledL2/prefetch/Prefetcher.scala Outdated
@linjuanZ linjuanZ merged commit 54a2a75 into master Jun 8, 2026
3 checks passed
linjuanZ pushed a commit to OpenXiangShan/XiangShan that referenced this pull request Jun 10, 2026
bump XScache
(OpenXiangShan/XSCache#10)
(OpenXiangShan/XSCache#13)

Co-authored-by: ywlcode <yuwl2024@shanghaitech.edu.cn>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants